<?php
App::import('Vendor', 'php-excel-reader/excel_reader2');
class UnionMembersController extends AppController{
	var $name = 'UnionMembers';//Union_members
	var $uses = array('UnionMember', 'UnionMemberDetail', 'Position', 'Status', 'Union', 'Biography','Hometown','Ethnic','Religion');
	var $components = array('RequestHandler', 'Filter', 'FileUpload');
	var $helpers = array('Js' => array('Jquery'), 'Ajax', 'xls');
	var $paginate = array(
        'limit' => 10,
        'order' => array(
            'UnionMember.id' => 'asc'
        )
    );
    function login(){
    	$this->layout = false;
    }
	function logout() {
        $this->redirect($this->Auth->logout());
    }
	function beforeFilter(){
    	parent::beforeFilter();
    	$this->Auth->allow(array('*'));
    }
    function index(){
      	$this->set('list_union', $this->Union->find('list'));
		$this->set('list_pos', $this->Position->find('list'));
		$this->set('list_status', $this->Status->find('list'));
    	$filter = $this->Filter->process($this);
    	$this->set('members', $this->paginate('UnionMember', $filter));
    	$this->set('isFilter', $filter);
    }
    	
	function unionUmsFee($current_union_id){
		$this->set(union_id,$current_union_id);
    	$data = $this->UnionMember->find('all', array('conditions' => array('UnionMember.current_union_id' => $current_union_id)));
    	$this->set('members', $data); 	
    }
    
	function unionUmsRate($current_union_id){
		$this->set(union_id,$current_union_id);
		$year = date('Y');
    	//$data = $this->UnionMember->find('all', array('conditions' => array('UnionMember.current_union_id' => $current_union_id)));
    	$data = $this->UnionMember->query("select * from union_members as UnionMembers, union_member_details as UnionMemberDetails, unions as Unions, biographies as Biographies where UnionMembers.id = UnionMemberDetails.id and UnionMembers.current_union_id = Unions.id and UnionMembers.id = Biographies.um_id and Biographies.year = '$year' and UnionMembers.current_union_id = '$current_union_id';");
     	$this->set('members', $data); 
     }
    
	    
    function biography($id){
   		if(!$id){
			$this->Session->setFlash(__('Invalid user'), true);
			$this->Redirect(array('action' => 'index'));
		}
		else{
			$conditions = array('Biography.um_id'=>$id);
			$this->set('member', $this->UnionMember->read(null, $id));
			$this->set('biographies', $this->Biography->find('all', array('conditions'=>$conditions)));
		}
    }
    
    function view($id = null){
    	if(!$id){
			$this->Session->setFlash(__('Invalid user'), true);
			$this->Redirect(array('action' => 'index'));
		}
		else{
			$this->set('member', $this->UnionMember->read(null, $id));
		}
    }
    
	function add() {
		$this->UnionMember->create();
		$this->set('list_union', $this->Union->find('list'));
		if (!empty($this->data))
		{
			$this->data['UnionMember']['status_id'] = 1; //đang hoạt động Đoàn
			$this->data['UnionMember']['current_pos_id'] = 0; // chức vụ Đoàn Viên
			$deafaultPass = $this->data['UnionMember']['id'];
			$this->data['UnionMember']['password'] = Security::hash($deafaultPass,null,true); //mã hóa pass trước khi lưu xuống CSDL
			if ($this->UnionMember->save($this->data)) {
				$this->flash(__('Đoàn viên thêm thành công. Tiếp tục nhập thông tin chi tiết của Đoàn Viên.', true), array('controller'=>'UnionMemberDetails','action' => 'edit', $this->data['UnionMember']['id']));
			}
			else{
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
			}
		}
	}
	function edit($id = null) {
		$this->UnionMember->id = $id;
		$this->set('list_status', $this->Status->find('list'));
		$this->set('list_union', $this->Union->find('list'));
		if (empty($this->data)) {
			$this->data = $this->UnionMember->read();
		} else {
			if ($this->UnionMember->save($this->data)) {
				$this->flash(__('Sửa thông tin Đoàn Viên thành công. Tiếp tục sửa thông tin chi tiết của Đoàn Viên.', true), array('controller'=>'UnionMemberDetails','action' => 'edit', $this->data['UnionMember']['id']));
			}
			else
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
		}
	}
	function delete($id) {
		$this->UnionMember->delete($id);
		$this->redirect(array('action' => 'index'));
	}
	function delMulti(){
		if($this->data['SelectedUMs'])
		{
			$listSelect = array();
			foreach($this->data['SelectedUMs'] as $key => $value) {
				if($value != '0') {
					array_push($listSelect, $value);
					
					//$this->UnionMember->delete($value);
					//$this->flash(__($value, true), array('action' => 'index'));
		 		}
			}
			$this->set('members', $this->UnionMember->find('all', array('conditions'=>array('UnionMember.id'=>$listSelect))));
			$this->Session->write('listDel', $listSelect);
		}
		else{
			if($this->Session->check('listDel')){
				foreach($this->Session->read('listDel') as $value){
					$this->UnionMember->delete($value);
					
				}
				$this->Session->delete('listDel');
				$this->flash(__('Đã xóa thành công', true), array('action' => 'index'));
			}
			else{
				$this->flash(__('Thao tác thất bại, vui lòng thử lại', true), array('action' => 'index'));
			}
		}
	}
	function move($id,$toUnion) {
		$this->UnionMember->query("update union_members set current_union_id = '$toUnion' where id = '$id';");
	}
	function moveMulti(){
		$this->set('list_union', $this->Union->find('list'));
		
		if($this->data['SelectedUMs'])
		{
			$listSelect = array();
			foreach($this->data['SelectedUMs'] as $key => $value) {
				if($value != '0') {
					array_push($listSelect, $value);
					
					//$this->UnionMember->delete($value);
					//$this->flash(__($value, true), array('action' => 'index'));
		 		}
			}
			$this->set('members', $this->UnionMember->find('all', array('conditions'=>array('UnionMember.id'=>$listSelect))));
			$this->Session->write('listMove', $listSelect);
		}
		else{
			
			if($this->Session->check('listMove')){
				$toUnion = $this->data['UnionMember']['current_union_id'];
				foreach($this->Session->read('listMove') as $value){
					$this->move($value, $toUnion);
					}
				$this->Session->delete('listMove');
				$this->flash(__('Thao tác thành công.', true), array('action' => 'index'));
			}
			else{
				$this->flash(__('Thao tác thất bại, vui lòng thử lại', true), array('action' => 'index'));
			}
		}
	}

	function exportXls(){
		$filter = $this->Filter->process($this);
		$this->set('members', $this->UnionMember->find('all', array('conditions'=>$filter)));
	}
	
	function exportXlsCadre(){
		$this -> paginate = array(
        						'limit' => 10,
        						'order' => array(
           						 				'UnionMember.id' => 'asc'
       											 ),
       							'conditions'=>array('UnionMember.current_pos_id !='=>0)
    						);
		$filter = $this->Filter->process($this);
		$this->set('members', $this->paginate('UnionMember', $filter));
		//$this->set('members', $this->UnionMember->find('all', array('conditions'=>$filter)));
	}
	
	function importXls(){
		//process upload file
        $this->FileUpload->uploadDir = 'files';
		$this->FileUpload->fileModel = null;
        $this->FileUpload->allowedTypes=array('xml','xls');
        $this->FileUpload->maxFileSize='2M';

        if($this->FileUpload->uploadFile('listmems')) {
            //process import file into database
            $data = new Spreadsheet_Excel_Reader("files\\".$this->FileUpload->finalFile,true,'UTF-16LE');
            $this->set('data', $data);
            $tempdata = array('UnionMember'=>array('id'=>'','firstname'=>'', 'lastname'=>''));
            for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {

                if(empty($data->sheets[0]['cells'][$i][1])) {
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
                }else {
                    $tempdata['UnionMember']['id'] = $data->sheets[0]['cells'][$i][1];
                };
                
                if(empty($data->sheets[0]['cells'][$i][2])) {
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
                }else {
                    $tempdata['UnionMember']['firstname'] = $data->sheets[0]['cells'][$i][2];
                };
				
                if(empty($data->sheets[0]['cells'][$i][3])) {
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
                }else {
                    $tempdata['UnionMember']['lastname'] = $data->sheets[0]['cells'][$i][3];
                };
                //Prepare data to validate
                $this->UnionMember->set($tempdata);
                if($this->UnionMember->validates()) {
                    //Checking id if it existed
                    if($this->UnionMember->find('count',array('conditions' => array('UnionMember.id' => $tempdata['UnionMember']['id'])))) {
                        $this->FileUpload->removeFile($this->FileUpload->finalFile);
                    	$this->flash(__('Thao tác thất bại do trùng mã số. Vui lòng thử lại', true), array('action' => 'index'));
                    }
                    else { //validate valid
                        if ($this->UnionMember->save()) {
							//$this->flash(__('Thao tác thành công 1', true), array('action' => 'index'));
					}
					else
						$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
					}
				}
                else    //validate is not valid
                {
                    
                    $this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Thêm mới bị lỗi từ SV có mã '.$data->sheets[0]['cells'][$i][1].", do lỗi dữ liệu nhập", true), array('action'=>'index'));
                }
            }
            $this->FileUpload->removeFile($this->FileUpload->finalFile);
            $this->flash(__('Thêm mới từ file thành công', true), array('action' => 'index'));
            
        }
        else {
            $this->flash($this->FileUpload->showErrors());
        }
	}
function chuyenLop(){}	
function chuyenLopXls(){
		//process upload file
        $this->FileUpload->uploadDir = 'files';
		$this->FileUpload->fileModel = null;
        $this->FileUpload->allowedTypes=array('xml','xls');
        $this->FileUpload->maxFileSize='2M';

        if($this->FileUpload->uploadFile('listmems')) { //upload OK
            //process import file into database
            $data = new Spreadsheet_Excel_Reader("files\\".$this->FileUpload->finalFile,true,'UTF-16LE');
            $this->set('data', $data);
            $tempdata = array('UnionMember'=>array('id'=>'','current_union_id'=>'')); //chỉ cần 2 giá trị id của ĐV và id của Chi Đoàn hiện tại
            $countError=0;
            for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) { //bắt đầu duyệt từ dòng thứ 2 trong excel

                if(empty($data->sheets[0]['cells'][$i][1])) { //check xem ô id có rỗng ko
                	$countError = $countError + 1;
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Dữ liệu rỗng ở hàng thứ '.$i.' trong file Excel. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                }else {
                    $tempdata['UnionMember']['id'] = $data->sheets[0]['cells'][$i][1];
                };
                
                if(empty($data->sheets[0]['cells'][$i][2])) { //check xem ô current_union_id có rỗng ko
                	$countError = $countError + 1;
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Dữ liệu rỗng ở hàng thứ '.$i.' trong file Excel. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                }else { 
                    $tempdata['UnionMember']['current_union_id'] = $data->sheets[0]['cells'][$i][2];
                };
				
                //Prepare data to validate
                $this->UnionMember->set($tempdata);
                if($this->UnionMember->validates()) {
                	$checkMSSV = $this->UnionMember->query("select count(id) from union_members where id ='".$tempdata['UnionMember']['id']."';");
                	$checkUnion = $this->UnionMember->query("select count(id) from unions where id ='".$tempdata['UnionMember']['current_union_id']."';");
                    if(($checkMSSV[0][0]["count(id)"]>0) && ($checkUnion[0][0]["count(id)"]>0)) 
                    	{
                     //nếu ĐV đã có trong CSDL (đang ở Chi Đoàn cũ), và Chi Đoàn chuyển tới đã được tạo thì mới chuyển    
                    $this->UnionMember->query("update union_members set current_union_id = '".$tempdata['UnionMember']['current_union_id']."' where id = '".$tempdata['UnionMember']['id']."';");
                    }
                    else { //nếu ĐV ko tồn tại thì ko làm
                    	$countError = $countError + 1;
                        $this->flash(__('Thao tác thất bại ở hàng thứ '.$i.' trong file Excel. Vui lòng kiểm tra lại file excel. Phải đảm bảo tất cả ĐV đã có trong CSDL và đang thuộc một Chi Đoàn cũ nào đó trước khi chuyển qua Chi Đoàn mới. Và Chi Đoàn mới đã được tạo.', true), array('action' => 'index'));
                        
					}
				}
                else    //validate is not valid
                {
                    $countError = $countError + 1;
                    $this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Thao tác thất bại ở hàng thứ '.$i.' trong file Excel.', true), array('action'=>'index'));
                }
            }//kết thúc vòng for
            $this->FileUpload->removeFile($this->FileUpload->finalFile);
            if($countError==0){
            $this->flash(__('Chuyển lớp thành công.', true), array('action' => 'index'));
            }
            
        } //kết thúc if($this->FileUpload->uploadFile('listmems'))
        else {
            $this->flash(__('Lỗi upload file.', true), array('action' => 'index'));
        }
	}
	
function unionCadre(){
     	//$data =  $this->UnionMember->query("select id, lastname, firstname,current_union_id, current_pos_id
			//												from union_members as UnionMembers
				//											where UnionMembers.current_pos_id != 0;");
		$this -> paginate = array(
        						'limit' => 10,
        						'order' => array(
           						 				'UnionMember.id' => 'asc'
       											 ),
       							'conditions'=>array('UnionMember.current_pos_id !='=>0)
    						);
		$this->set('list_union', $this->Union->find('list'));
		$this->set('list_pos', $this->Position->find('list'));
	  	$filter = $this->Filter->process($this);
    	$this->set('members', $this->paginate('UnionMember', $filter));
    	$this->set('isFilter', $filter);
    }
function addCadre() {
		$this->UnionMember->create();
		$this->set('list_pos', $this->Position->find('list'));
		if (!empty($this->data))
		{
			$um_id = $this->data['UnionMember']['id'];
			$pos_id = $this->data['UnionMember']['current_pos_id'];
			$temp = $this->UnionMember->query("select current_union_id from union_members where id = '$um_id';");
			$union_id = $temp[0]["union_members"]["current_union_id"];
			$bool_reset_cadre = $this->UnionMember->query("call pro_ResetPosition ($pos_id, '$union_id');");//gọi Proc reset chức vụ trước khi làm
			$bool_add_cadre = $this->UnionMember->query("update union_members set current_pos_id = '$pos_id' 
														where id='$um_id';");
			if ($bool_add_cadre) {
				$this->flash(__('Bổ nhiệm cán bộ thành công.'.$union_id, true), array('action' => 'unionCadre'));
			}
			else{
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'unionCadre'));
			}
		}
	}
	
	function deleteCadre($id) {
		if($this->UnionMember->query("update union_members set current_pos_id = 0 where id='$id';"))
		{
			$this->flash(__('Xóa cán bộ thành công.', true), array('action' => 'unionCadre'));
		}
		else
		{
			$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'unionCadre'));
		}
	}
	
	function subUms($current_union_id){
		$this -> paginate = array(
        						'limit' => 10,
        						'order' => array(
           						 				'UnionMember.id' => 'asc'
       											 ),
       							'conditions'=>array('UnionMember.current_union_id'=>$current_union_id,'UnionMember.status_id'=>0)
    						);
      	$this->set('union_id', $current_union_id);
		$filter = $this->Filter->process($this);
    	$this->set('members', $this->paginate('UnionMember', $filter));
    	$this->set('isFilter', $filter);
    }
    
	function addSub($current_union_id) {
		$this->UnionMember->create();
		$this->set('union_id', $current_union_id);
		$this->set('list_ethnic', $this->Ethnic->find('list'));
		$this->set('list_hometown', $this->Hometown->find('list'));
		$this->set('list_religion', $this->Religion->find('list'));
		if (!empty($this->data))
		{
			$this->data['UnionMemberDetail']['id'] = $this->data['UnionMember']['id'];
			$this->data['UnionMember']['status_id'] = 0; //dự bị Đoàn Viên
			$this->data['UnionMember']['current_pos_id'] = 0; // chức vụ Đoàn Viên
			$deafaultPass = $this->data['UnionMember']['id'];
			$this->data['UnionMember']['password'] = Security::hash($deafaultPass,null,true); //mã hóa pass trước khi lưu xuống CSDL
			if ($this->UnionMember->saveAll($this->data)) {
				$this->flash(__('Thêm dự bị Đoàn Viên thành công.', true), array('action' => 'subUms', $this->data['UnionMember']['current_union_id']));
			}
			else{
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'subUms',$this->data['UnionMember']['current_union_id']));
			}
		}
	}
	
	function editSub($id,$current_union_id) {
		$this->UnionMember->id = $id;
		$this->set('id',$id);
		$this->set('union_id', $current_union_id);
		$this->set('list_ethnic', $this->Ethnic->find('list'));
		$this->set('list_hometown', $this->Hometown->find('list'));
		$this->set('list_religion', $this->Religion->find('list'));
		if (empty($this->data)) {
			$this->data = $this->UnionMember->read();
		} else {
			if ($this->UnionMember->saveAll($this->data)) {
				$this->flash(__('Sửa thông tin Đoàn Viên thành công.', true), array('action' => 'subUms', $this->data['UnionMember']['current_union_id']));
			}
			else
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'subUms', $this->data['UnionMember']['current_union_id']));
		}
	}
}
?>